home *** CD-ROM | disk | FTP | other *** search
/ Aminet 6 / Aminet 6 - June 1995.iso / Aminet / dev / gcc / objam01.lha / objam / objbas / IdArray.m < prev    next >
Encoding:
Text File  |  1994-12-14  |  1.4 KB  |  79 lines

  1. /*
  2. ** ObjectiveAmiga: Implementation of class IDArray
  3. ** See GNU:lib/libobjam/ReadMe for details
  4. */
  5.  
  6.  
  7. #import "IdArray.h"
  8.  
  9.  
  10. @implementation IdArray
  11.  
  12. + (unsigned)ndxVarSize { return sizeof(id); }
  13.  
  14. - add:anObject
  15. {
  16.   unsigned i;
  17.   for(i=0;i<capacity;i++)
  18.   {
  19.     if(((id*)elements)[i]==nil)
  20.     {
  21.       ((id*)elements)[i]=anObject;
  22.       return self;
  23.     }
  24.   }
  25.   return [self boundsViolation:capacity];
  26. }
  27.  
  28. - at:(unsigned)anOffset
  29. {
  30.   if(anOffset>=capacity) return [self boundsViolation:anOffset];
  31.   return ((id*)elements)[anOffset];
  32. }
  33.  
  34. - at:(unsigned)anOffset put:anObject
  35. {
  36.   id oldObject;
  37.  
  38.   if(anOffset>=capacity) return [self boundsViolation:anOffset];
  39.   oldObject=[self at:anOffset];
  40.   ((id*)elements)[anOffset]=anObject;
  41.   return oldObject;
  42. }
  43.  
  44. - (STR)describe { return "@"; }
  45.  
  46. - eachElementPerform:(SEL)aSelector
  47. {
  48.   unsigned i;
  49.   for(i=0;i<capacity;i++) [(((id*)elements)[i]) perform:aSelector];
  50.   return self;
  51. }
  52.  
  53. - eachElementPerform:(SEL)aSelector with:anArg
  54. {
  55.   unsigned i;
  56.   for(i=0;i<capacity;i++) [(((id*)elements)[i]) perform:aSelector with:anArg];
  57.   return self;
  58. }
  59.  
  60. - eachElementPerform:(SEL)aSelector with:anArg with:anotherArg
  61. {
  62.   unsigned i;
  63.   for(i=0;i<capacity;i++) [(((id*)elements)[i]) perform:aSelector with:anArg with:anotherArg];
  64.   return self;
  65. }
  66.  
  67. - freeContents
  68. {
  69.   unsigned i;
  70.   for(i=0;i<capacity;i++)
  71.   {
  72.     [(((id*)elements)[i]) free];
  73.     ((id*)elements)[i]=nil;
  74.   }
  75.   return self;
  76. }
  77.  
  78. @end
  79.